# Prompting基础

## 基本提示

简单提示可以实现很多，但结果的质量取决于您提供的信息量和提示是否精心设计。提示可以包含信息，例如您传递给模型的*指示*或*问题*，以及包括*上下文*、*输入*或*示例*等其他细节。您可以使用这些元素更好地指导模型，从而获得更好的结果。

让我们从一个简单提示的基本示例开始：

*提示*
```
天空是
```

*输出：*
```
蓝色的

在晴朗的日子里，天空是蓝色的。在阴天、雾天，天空可能是灰色或白色的。
```

正如您所看到的，语言模型输出了一个字符串续接，根据上下文"The sky is"是有意义的。输出可能是出乎意料的或远离我们想要实现的任务。

这个基础示例还凸显了提供更多上下文或指示以及要特别实现什么的必要性。

我们试着稍微改进一下：

*提示：*
```
完成句子：
天空是
```

*输出：*
```
今天很美丽。
```

这样好些了吗？好的，我们让模型完成句子，因此结果看起来更好，因为它完全按照我们告诉它要做的事情（“完成句子”）来执行。这种设计最佳提示以指导模型执行任务的方法被称为**提示工程**。

以上示例是当前LLMs所能实现的基本说明。今天的LLMs能够执行从文本摘要到数学推理再到代码生成等各种高级任务。

## 提示格式

以上我们尝试了非常简单的提示。标准提示具有以下格式：

```
<问题>？
```

或

```
<指示>
```

这可以格式化为问题回答（QA）格式；这是许多QA数据集的标准，如下所示：

```
Q: <问题>？
A: 
```当像上面这样提示时，它也被称为*零-shot提示*，即，您直接提示模型回复而没有任何关于要完成的任务的示例或演示。一些大型语言模型确实具有执行零-shot提示的能力，但这取决于手头任务的复杂性和知识。

在给定上述标准格式的情况下，一种流行且有效的提示技术被称为*少数样本提示*，在其中我们提供范例（即，演示）。Few-shot提示的格式如下：

```
<问题>？
<答案>

<问题>？
<答案>

<问题>？
<答案>

<问题>？

```

QA格式版本如下：

```
问: <问题>？
答: <答案>

问: <问题>？
答: <答案>

问: <问题>？
答: <答案>

问: <问题>？
答:
```

请记住，不需要使用QA格式。提示格式取决于手头的任务。例如，您可以执行简单的分类任务，并给出如下证明任务的范例：

*提示：*
```
这真是太棒了！ // 正面
这很糟糕！ // 负面
哇，那部电影太棒了！ // 正面
多么糟糕的表演！ //
```

*输出：*
```
负面
```

Few-shot提示可以实现上下文学习，这是语言模型在少数几个演示的情况下学习任务的能力。